/**
 * Projeto Myou - Disciplina: Sistemas de Informação I
 * @author Ronycley Gonçalves Agra
 * @since 23/09/2011
 */
package myou.classes;
/**
 * Classe que encapsula o comportamento de uma 
 * requisição de empréstimo
 * @author Ronycley Gonçalves Agra
 * @version 1.0
 * @since Milestone 1 23/09/2011 
 * @see myou.classes.Sistema
 * @see myou.classes.Interesse
 * @see myou.classes.Emprestimo
 * @see myou.classes.Mensagem
 * @see myou.classes.Item
 * @see myou.classes.RequisicaoDeAmizade
 * @see myou.classes.Sessao
 * @see myou.classes.Topico
 * @see myou.classes.Usuario
 */
public class RequisicaoDeEmprestimo {
	
	private String id;
	private Usuario usuario;
	private Item item;
	private int duracao;
	
	/**
	 * Construtor
	 * @param usuario O usuário requisitante
	 * @param item O item requisitado
	 * @param duracao A duração do empréstimo
	 */
	public RequisicaoDeEmprestimo(Usuario usuario, Item item, int duracao) {
		this.usuario = usuario;
		this.item = item;
		this.duracao = duracao;
		this.id = this.generateId();
	}
	
	/**
	 * Retorna o id da requisição
	 * @return O id da requisição
	 */
	public String getId() {
		return id;
	}

	/**
	 * Retorna o usuário requisitante
	 * @return O usuário requisitante
	 */
	public Usuario getUsuario() {
		return usuario;
	}

	/**
	 * Modifica o usuário requisitante
	 * @param usuario O novo usuário requisitante
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	/**
	 * Retorna o item requisitado
	 * @return O item requisitado
	 */
	public Item getItem() {
		return item;
	}

	/**
	 * Modifica o item requisitado
	 * @param item O novo item requisitado
	 */
	public void setItem(Item item) {
		this.item = item;
	}

	/**
	 * Retorna a duração do empréstimo
	 * @return A duração do empréstimo
	 */
	public int getDuracao() {
		return duracao;
	}

	/**
	 * Modifica a duração do empréstimo
	 * @param duracao A nova duração do empréstimo
	 */
	public void setDuracao(int duracao) {
		this.duracao = duracao;
	}

	/**
	 * Gera randomicamente o id da requisição
	 * @return O id da requisição
	 */
	private String generateId(){
		int parteRandomica = (int)(Math.random()* 10000);
		return this.item.getNome()+(new Integer(parteRandomica)).toString();
	}	
}
